package it.polimi.TravelDreamEAR.managedBeans;

import it.polimi.TravelDreamEAR.ejb.sessionBeans.PacchettoManager;
import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.ClienteDTO;
import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.ImpiegatoDTO;
import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.PacchettoDTO;
import it.polimi.TravelDreamEAR.ejb.sessionBeans.dto.EscursioniDTO;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.persistence.EntityManager;
import javax.persistence.NamedQuery;

import java.util.List;
import java.util.ArrayList;


@ManagedBean(name="pacchettoBean")
@RequestScoped
public class PacchettoBean {
	
	@EJB
	private PacchettoManager pacchettoManager;
	
	private PacchettoDTO pacchettoDTO;
	
	private EscursioniDTO escursioneDTO;

	private List<EscursioniDTO> escursioni;

	//Una lista di pacchetti per la loro visualizzazione
	private ArrayList<PacchettoDTO> listaPacchetti;
	 

	public PacchettoBean() {
    	pacchettoDTO = new PacchettoDTO();
    	escursioneDTO = new EscursioniDTO();
    	escursioni = new ArrayList<EscursioniDTO>();
	}

	public List<EscursioniDTO> getEscursioni() {
		return escursioni;
	}

	public void setEscursioni(ArrayList<EscursioniDTO> escursioni) {
		this.escursioni = escursioni;
	}
	
	public EscursioniDTO getEscursioneDTO() {
		return escursioneDTO;
	}

	public void setEscursioneDTO(EscursioniDTO escursioneDTO) {
		this.escursioneDTO = escursioneDTO;
	}

	public PacchettoDTO getPacchettoDTO() {
		return pacchettoDTO;
	}

    public void setPacchettoDTO(PacchettoDTO pacchettoDTO) {
		this.pacchettoDTO = pacchettoDTO;
	}
    
	public List<PacchettoDTO> getListaPacchetti() {
		this.listaPacchetti = (ArrayList<PacchettoDTO>) pacchettoManager.pacchettiDisponibili();
		return listaPacchetti;
	}

	public void setListaPacchetti() {	
		this.listaPacchetti = (ArrayList<PacchettoDTO>) pacchettoManager.pacchettiDisponibili();
	}	
 
	public String creazione() {
		int esito = pacchettoManager.save(this.pacchettoDTO);
		if (esito == 1)
			return "paginaPersonaleAmministratore.xhtml?faces-redirect=true";
		else
			if(esito == 2)
				return "paginaPersonaleImpiegato.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String selezionaPacchetto(){
		int esito = pacchettoManager.selezionaPacchetto(this.pacchettoDTO);
		if(esito==1)
			return "paginaPersonaleCliente.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String modificaDati(){
		int esito = pacchettoManager.modificaDati(this.pacchettoDTO);
		if (esito==1)
			return "modificaPacchetto.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
	
	public String aggiungiEscursione(){
		int esito = pacchettoManager.addEscursioni(this.pacchettoDTO, this.escursioneDTO);
		if (esito==1)
			return "aggiungiEscursioni.xhtml?faces-redirect=true";
		else 
			return "errore.hxtml?faces-redirect=true";
	}
	
	public String elimina() {
		int esito = pacchettoManager.elimina(this.pacchettoDTO);
		if (esito==1)
			return "eliminaPacchetto.xhtml?faces-redirect=true";
		return "errore.hxtml?faces-redirect=true";
	}
	
	public String eliminaEscursione(){
		int esito = pacchettoManager.deleteEscursione(this.pacchettoDTO, this.escursioneDTO);
		if (esito==1)
			return "rimuoviEscursioni.xhtml?faces-redirect=true";
		return "errore.xhtml?faces-redirect=true";
	}
}